﻿/*
 * MySet.cs
 *
 * Created on December 23, 2010
 *
 * Copyright (C) 2010       Mathijs Miermans
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, in version 3 of the License.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */
using System;
using System.Collections;
using System.Collections.Generic;

namespace HexTD.util
{
	// TODO: Replace this with HashSet when it is available for Windows Phone 7
	public class MySet<T> : ICollection<T>
	{
		private Dictionary<T, short> MyDict;

		public MySet()
		{
			MyDict = new Dictionary<T, short>();
		}

		// Methods
		public void Add(T item)
		{
			// We don't care for the value in dictionary, Keys matter.
			MyDict.Add(item, 0);
		}

		public void Clear()
		{
			MyDict.Clear();
		}

		public bool Contains(T item)
		{
			return MyDict.ContainsKey(item);
		}

		public void CopyTo(T[] array, int arrayIndex)
		{
			throw new NotImplementedException();
		}

		public bool Remove(T item)
		{
			return MyDict.Remove(item);
		}

		public IEnumerator<T> GetEnumerator()
		{
			throw new NotImplementedException();
		}

		IEnumerator IEnumerable.GetEnumerator()
		{
			throw new NotImplementedException();
		}

		// Properties
		public int Count
		{
			get { return MyDict.Keys.Count; }
		}

		public bool IsReadOnly
		{
			get { return false; }
		}
	}
}
